The engineering design process can be viewed as the process of attaining specified values of one or more performance attributes by manipulating one or more design variables within limits specified by one or more corresponding constraints. Unfortunately, the number of design variables, the number of constraints, and the often non-linear coupling between constraints and design variables, can become hinder the process of identifying feasible designs.
When faced with design problems of excessive complexity, the logical progression of the engineering design process from the specified values to the optimal values of the design variables is often derailed. Under these circumstances, the designer often resorts to heuristic reasoning and educated guesswork accompanied by computer simulation. In addition to its inefficiency, this iterative engineering design method is not guaranteed to converge to an optimal set of values for the design variables.